package com.example.behaviorpattern.memento.blackbox;

import lombok.Getter;
import lombok.Setter;

/**
 * 原发器类
 *
 * @author yaojianfeng
 */
@Setter
@Getter
public class Originator {
    /**
     * 状态
     */
    private String state;

    /**
     * 创建备忘录
     *
     * @return Memento
     */
    public Memento createMemento() {
        return new MementoImpl(state);
    }

    /**
     * 通过备忘录恢复状态
     *
     * @param memento Memento
     */
    public void restore(Memento memento) {
        this.state = ((MementoImpl) memento).state;
    }

    /**
     * 备忘录接口实现类 - 用于存储状态
     */
    private record MementoImpl(String state) implements Memento {
    }
}